/*******************************************************************************************
 * 
 * The subclass of <code>Interpreter</code> to decode the MIPS instructions
 *
 ******************************************************************************************/
#ifndef MIPSINTERPRETER_H
#define MIPSINTERPRETER_H

#include "crossbit/Interpreter.h"
#include "MIPSProcessorState.h"

using namespace crossbit;

namespace crossbit
{
    class MIPSInterpreter : public Interpreter {
        public:
            MIPSInterpreter( MIPSProcessorState *state)
                : Interpreter( state )
                {
                }

            ~MIPSInterpreter()
            {
            }
            // decode the MIPS instruction to <code>VInst</code>, then the <code>bb</code> will put them into a <code>VBlock</code>
            virtual XTMemAddr decode (XTMemAddr addr, VBlockBuilder *bb);
            virtual XTInt32 initStack(XTMemAddr sp);

            void delaySlot(XTMemAddr addr);

    };
}

#endif	//MIPSINTERPRETER_H
